#ifndef BANK_REPORTGENERATOR_HH
#define BANK_REPORTGENERATOR_HH

#include <string>
#include <vector>
#include "Transaction.hh"

class ReportGenerator {
public:
    // 构造函数
    ReportGenerator();

    // 生成全局交易报告（所有交易）
    bool generateGlobalTransactionReport(const std::vector<Transaction>& transactions) const;
    
    // 生成客户交易报告（特定客户的所有交易）
    bool generateCustomerReport(const std::string& customerName, 
                               const std::vector<Transaction>& transactions) const;
    
    // 生成账户交易报告（特定账户的所有交易）
    bool generateAccountReport(const std::string& accountId, 
                              const std::vector<Transaction>& transactions) const;
    
    // 生成季度银行交易报告
    bool generateQuarterlyReport(int year, int quarter, 
                                const std::vector<Transaction>& transactions) const;
    
    // 生成审计报告
    bool generateAuditReport(const std::string& startDate, const std::string& endDate, 
                            const std::vector<Transaction>& transactions) const;

private:
    // 辅助方法：在控制台显示交易记录
    void displayTransactionsOnConsole(const std::vector<Transaction>& transactions) const;
    
    // 辅助方法：写入交易记录到文件
    bool writeTransactionsToFile(const std::string& filename, 
                                const std::vector<Transaction>& transactions) const;
    
    // 辅助方法：生成格式化的文件名（包含日期）
    std::string generateFilename(const std::string& prefix) const;
};

#endif // BANK_REPORTGENERATOR_HH 